package Dinero;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JLabel;

import Graficas.Grafica;
import Logica.Juego;

import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerException;

public abstract class Dinero{
	//ATRIBUTOS DE INSTANCIA
	protected int valor;
	protected JLabel imagen;
	protected int fila;
	protected int columna;
	protected Juego juego;
	protected boolean clickeado;
	protected Grafica grafica;
	protected int x;
	protected int y;
	
	//CONSTRUCTOR
	public Dinero(int v,int f,int c,Juego j,Grafica g){
		valor=v;clickeado=false;fila=f;columna=c;juego=j;grafica=g;x=columna*100;y=fila*100;
		imagen=new JLabel();
		imagen.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				JLabelDineroMouseClicked(evt);
			}
		});
		grafica.agregarDinero(this);//UNA VEZ QUE SE CREA EL DINERO, SE ENCARGA DE COLOCARSE EN LA GRAFICA
	}
	
	//CONSULTAS
	public int getValor(){
		return valor;
	}
	public JLabel getGrafica(){
		return imagen;
	}
	public int getFila(){
		return fila;
	}
	public int getColumna(){
		return columna;
	}
	public boolean fueClickeado(){
		return clickeado;
	}
	public int getX(){
		return x;
	}
	public int getY(){
		return y;
	}
	
	private void JLabelDineroMouseClicked(MouseEvent evt) {
		//UNA VEZ QUE EL DINERO FUE CLICKEADO, DEBE ACTUALIZARSE EL DINERO DEL JUGADOR Y SACARLO DE LA GRAFICA
		System.out.println("JLabelDinero.mouseClicked, event="+evt);
		//TODO add your code for JLabelDinero.mouseClicked
		if((juego.sigueJuego())&&(!juego.juegoEnPausa())){
			clickeado=true;
			BasicPlayer sonido=new BasicPlayer();
			try {
				sonido.open(getClass().getClassLoader().getResource("Sonidos/dineroSonido.mp3"));
				sonido.play();
			} catch (BasicPlayerException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();}
			grafica.retirarDinero(this);
			juego.incrementarDinero(valor);
			juego.getTablero().retirarDinero(this);}
	}

}
